When a user visits a web page containing media, for example audio, video or both, a video is displayed or audio player is activated in the browser window of the browser application. The media itself is available on a server or content distribution network somewhere on the internet or any other network as a media item. To allow the user to start watching or listening to the media before completely downloading the media, the media can be requested from the server in the form of multiple segments and each segment can be downloaded separately from the server. As soon as the first media segment is downloaded the browser application may start to present or play the media item. While doing so the next media segments are downloaded.
This way of downloading allows presenting a media item before the media item is completely downloaded. This results in a small delay between the start of the media item download and the actual playback of it. Moreover, when stopping or pausing the media item before the end, the download is stopped and, hence, only the needed video data was downloaded saving on network traffic and download quota.
Apart from the media segments, there is also information available on the server about the location of the media segments on the server and their respective timing. This information may be comprised in a single or in multiple files commonly referred to as manifest files. Before presenting the media, the browser application first retrieves this manifest file and selects the media segments to download.
HTTP Live Streaming (HLS) developed by Apple is a protocol describing such a way of downloading a media item, i.e. progressive downloading. In a client application supporting HLS, the client retrieves one or more manifest files containing links to all the video segments of a video item. Each video item may be available in several versions, each version referring to a different quality and/or resolution. When downloading the segments, the client can then choose in which quality or resolution the video chunk should be encoded based on a list present in one of the manifest files. The choice in quality and/or resolution by the client can depend on several factors such as screen resolution, bandwidth limitation or user inputs and/or preferences. In HLS, the video chunks are encoded according to the MPEG-TS protocol and downloaded as separate files. The video item is thus a succession of MPEG-TS encoded video segments. During display, the client downloads one or more of the next segments during display of a video item, hence supporting progressive download.
HLS is more commonly referred to as a HTTP adaptive streaming (HAS) protocol as it allows streaming of media content in an adaptive way, i.e. quality and resolution can be adapted during the streaming. For the downloading of the segments and manifests, HTTP GET requests are used. Other HAS protocols are for example Microsoft Smooth Streaming (MSS), HTTP Dynamic Streaming (HDS) by Adobe and Dynamic Adaptive Streaming over HTTP defined by the 3GPP standard (DASH).
A disadvantage of the HAS protocols is that none of them is natively supported by the HTML5 standard. The HTML5 standard supports the playback of a single media element without specifying the video format. As a result, implementations of HTML5 compliant browsers offer standard no support to play a HAS media item by linking to either a manifest file or a media segment, for example an MPEG-TS video segment. Therefore, to display a HAS video item, a browser plugin is needed or the HAS functionality must be implemented as an extra feature. Such a plugin or extra functionality needs to be especially developed for every browser application. Typically only a few browser applications have such a browser plugin or functionality available for a specific HAS protocol.
Therefore, it is the object of this invention to provide a method for playing multiple media segments of a media item in a browser application that overcomes the above disadvantages.